<?php

namespace App\Http\Controllers\Home;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
class CartController extends Controller
{

    // 将选择的商品添加到购物车
   public function getAdd(){
        // 定义一个商品id
        $id = 1;
        // 根据传过来的商品ID查询相关信息
        $data = DB::table('bro_product')->where('id',$id)->get();
        // dd($data);   
        // 将查询的数据分配到模板中
        return view('home.cart.add',['data'=>$data]);
   }

    // 将选择的商品添加到购物车 执行添加操作
    public function postDoadd(Request $request){
        // 查询要插入的信息
        $arr = $request->except('_token','money');
        // 用户编号
        $arr['uid'] = 1;
        // 购物车默认数量
        $arr['pnum'] = 1;
        // 购物时间
        $arr['time'] = date('Y-m-d,H:m:s',time());
        // 购物车小计
        $arr['cartmoney'] = $request->input('money');
        // 插入数据到数据库
        $res = DB::table('bro_cart')->insert($arr);
        //跳转到查询购物车信息的方法
        return redirect('/home/cart/index');
        }

    // 查询购物车里的信息
    public function getIndex(){
        // 定义一个商品id
        $pid = 1;
        // 联表查询所需要的字段
        $data = DB::table('bro_cart')->where('bro_cart.pid',$pid)
                ->join('bro_product','bro_product.id','=','bro_cart.pid')
                ->select('bro_cart.pid','bro_cart.id','bro_cart.uid','bro_cart.cartmoney','bro_cart.pnum','bro_product.money','bro_product.name','bro_product.logo')
                ->get();
        // 分配数据到index页面
        return view('home.cart.index',['data'=>$data,'pid'=>$pid]);
    }
    // 点击商品数量 修改购物车表里的数量
     public function getToadd(Request $request){
        // 获取下单数量
        $pnum = $request->input('pnum');
        // 获取商品的pid
        $pid = $request->input('pid');
        // 获取订单小计
        $cartmoney = $request->input('cartmoney');
        // 将数据插入到购物车表
        $res = DB::table('bro_cart')->where('pid',$pid)->update(['pnum'=>$pnum,'cartmoney'=>$cartmoney]);
   
    }
// 将购物车详细添加到订单表中
    public function getOrder(Request $request){
        // 获取下单数量
        $brr['num'] = $num = $request->input('onum');
        // 获取订单总价
        $brr['total'] = $total = $request->input('total');
        // 获取商品的pid
        $brr['pid'] = $pid = $request->input('pid');
        // 获取用户的uid信息
        $arr['uid'] = $uid = $request->input('uid');
        // 从商品表中查询商品名称信息
        $brr['pname'] = $pname = DB::table('bro_product')->where('id',$pid)->value('name');
        // 从商品表中查询商品单价信息
        $brr['pmoney'] = $pmoney = DB::table('bro_product')->where('id',$pid)->value('money');
        // 从用户表中查询用户信息
        $arr['uname'] = $uname = DB::table('bro_user')->where('id',$uid)->value('name');
        // 生成订单号
        $arr['ddid'] = $ddid = md5(md5(time().rand(100000,999999999)));
        // 生成下单时间
        $arr['atime'] = $atime = date('Y-m-d,H:m:s',time());
        // 插入数据到订单表中
        $res = DB::table('bro_order')->insert($arr);
        // 获取订单id
        $id = DB::table('bro_order')->where('ddid',$ddid)->value('id');
        // 获取关联订单表的id
        $brr['oid'] = $oid = $id;
        // 插入数据到订单表中
        $sql = DB::table('bro_orderdata')->where('oid',$id)->insert($brr);
        // 跳转到等待支付页面
        return redirect('/home/cart/check/'.$oid);
    }
    // 获取到的ID删除商品
    public function getDelete($id){
        // 执行删除语句
        $res = DB::table('bro_cart')->where('id',$id)->delete();
        // 判断 
        if($res>0){
            return redirect('/home/cart/index');
        }else{
            return back();
        }
    }
    // 跳转到地址页面 选择收货地址 查询商品信息
    public function getCheck($oid){
         // 获取订单表的信息
        $sql = DB::table('bro_orderdata')->where('oid',$oid)
                                    ->join('bro_order','bro_orderdata.oid','=','bro_order.id')
                                    ->get();  
        // 获取商品的pid
        $pid = DB::table('bro_orderdata')->where('oid',$oid)->value('pid');
        // 获取商品的oid
        $oid = DB::table('bro_orderdata')->where('oid',$oid)->value('oid');
        // 获取购物车和商品表的信息
        $data = DB::table('bro_cart')->where('bro_cart.pid',$pid)
                                    ->join('bro_product','bro_product.id','=','bro_cart.pid')
                                    ->get();
        // 获取用户的uid信息
        $uid = DB::table('bro_cart')->where('pid',$pid)->value('uid');
                              
        // 获取用户的信息
        $res = DB::table('bro_user')->where('id',$uid)->get();

       
        // 跳转到选择收货地址主页 查询商品信息页面
        return view('home.cart.check',['data'=>$data,'res'=>$res,'sql'=>$sql,'uid'=>$uid,'pid'=>$pid,'oid'=>$oid]);
    }

    
    //跳转到新增收货地址页面
    public function getAddress($oid){
        // 获取订单表中的收货地址 联表查询
        $data = DB::table('bro_orderdata')->where('oid',$oid)
                                    ->join('bro_order','bro_orderdata.oid','=','bro_order.id')
                                    ->get();
        // 获取商品的oid
        $oid = DB::table('bro_orderdata')->where('oid',$oid)->value('oid');   
        // 跳转到新增收货地址页面
        return view('home.cart.address',['data'=>$data,'oid'=>$oid]);
    }

    // 添加新的收货地址
    public function postDoaddress(Request $request){
        // 接收表单传过来的数据
        $arr = $request->except('_token','oid');
        // 获取订单的oid
        $oid = $request->input('oid');
        // 连接数据库插入数据
        $res = DB::table('bro_orderdata')->where('oid',$oid)->update($arr);
        // 判断
        if($res){
            return redirect('/home/cart/address/'.$oid);
        }else{
            return back();
        }
    }

     //新增收货地址页面删除功能
    public function getDel($oid){
        // 将订单表里的收货地址修改为空
        $res = DB::table('bro_orderdata')->where('oid',$oid)->update(['address'=>'','utel'=>'','tname'=>'']);
        // 判断
        if($res>0){
            return redirect('/home/cart/address/'.$oid);
        }else{
            return back();
        }
    }
    // 新增收货地址页面  修改功能
    public function postUpdate(Request $request){
        // 接收表单传过来的数据
        $arr = $request->except('_token','oid');
        // 获取订单的oid
        $oid = $request->input('oid');
        // 连接数据库插入数据
        $res = DB::table('bro_orderdata')->where('oid',$oid)->update($arr);
        if($res){
            return redirect('/home/cart/address/'.$oid);
        }else{
            return back();
        }
    }
    // 等待支付页面
    public function getPaid($oid){
        // 获取订单表中的收货地址 联表查询
         $data = DB::table('bro_orderdata')->where('oid',$oid)
                                    ->join('bro_order','bro_orderdata.oid','=','bro_order.id')
                                    ->get();                            
        // 查询订单oid
        $oid = DB::table('bro_orderdata')->where('oid',$oid)->value('oid');
        // 跳转到等待支付页面
        return view('home.cart.paid',['data'=>$data,'oid'=>$oid]);
    }

    // 模拟支付页面
    public function getDopaid($oid){
        // 查询用户的uid
        $uid = DB::table('bro_order')->where('id',$oid)->value('uid');
        // 接收付款成功订单的id 根据id修改订单支付状态
        $data = DB::table('bro_order')->where('uid',$uid)->update(['state'=>1]);
        // 查询订单详细信息
        $res = DB::table('bro_orderdata')->where('oid',$oid)
                                    ->join('bro_order','bro_orderdata.oid','=','bro_order.id')
                                    ->get();
        // 跳转到支付成功页面
        return view('home.cart.dopaid',['res'=>$res,'uid'=>$uid]);
    }
}
